--  1. Простой INSERT
INSERT INTO users (name, email, age) VALUES ('John Doe', 'john@example.com', 25);
-- Этот запрос вставляет новую строку в таблицу `users` с именем 'John Doe', email 'john@example.com' и возрастом 25.

-- ------------------------------------------------------------------

--  2. INSERT с указанием всех столбцов
INSERT INTO users VALUES (1, 'John Doe', 'john@example.com', 25);
-- Этот запрос вставляет новую строку в таблицу `users`, указывая значения для всех столбцов. Здесь предполагается, что первый столбец - это `id`.

-- ------------------------------------------------------------------

--  3. INSERT с несколькими строками
INSERT INTO users (name, email, age) VALUES 
('Jane Smith', 'jane@example.com', 30),
('Alice Johnson', 'alice@example.com', 22),
('Bob Brown', 'bob@example.com', 28);
-- Этот запрос вставляет сразу несколько строк в таблицу `users`.

-- ------------------------------------------------------------------

--  4. INSERT с подзапросом
INSERT INTO archived_users (id, name, email, age)
SELECT id, name, email, age FROM users WHERE age > 50;
-- Этот запрос вставляет строки в таблицу `archived_users`, выбирая данные из таблицы `users` для пользователей старше 50 лет.

-- ------------------------------------------------------------------

--  5. INSERT с использованием SET
INSERT INTO users SET name = 'Emily White', email = 'emily@example.com', age = 35;
-- Этот запрос вставляет новую строку в таблицу `users`, используя синтаксис `SET` для указания значений столбцов.

-- ------------------------------------------------------------------

--  6. INSERT с автоинкрементным столбцом
INSERT INTO orders (user_id, amount, order_date) VALUES (1, 99.99, '2024-06-29');
-- Этот запрос вставляет новую строку в таблицу `orders`, предполагая, что столбец `id` является автоинкрементным и его значение будет установлено автоматически.

-- ------------------------------------------------------------------

--  7. INSERT с пропуском столбцов с значениями по умолчанию
INSERT INTO users (name, email) VALUES ('Charlie Green', 'charlie@example.com');
-- Этот запрос вставляет новую строку в таблицу `users`, при этом столбец `age` будет заполнен значением по умолчанию (если оно установлено).

-- ------------------------------------------------------------------

--  8. INSERT IGNORE для избежания дублирования ошибок
INSERT IGNORE INTO users (id, name, email, age) VALUES (1, 'John Doe', 'john@example.com', 25);
-- Этот запрос пытается вставить новую строку в таблицу `users`, но игнорирует ошибку, если строка с таким `id` уже существует.

-- ------------------------------------------------------------------

--  9. INSERT ON DUPLICATE KEY UPDATE для обновления существующих строк
INSERT INTO users (id, name, email, age) VALUES (1, 'John Doe', 'john@example.com', 25)
ON DUPLICATE KEY UPDATE name = VALUES(name), email = VALUES(email), age = VALUES(age);
-- Этот запрос вставляет новую строку в таблицу `users` или обновляет существующую строку, если запись с таким `id` уже существует.

-- ------------------------------------------------------------------

-- 10. INSERT с использованием текущей даты и времени
INSERT INTO logs (user_id, action, log_date) VALUES (1, 'login', NOW());
-- Этот запрос вставляет новую строку в таблицу `logs`, используя текущую дату и время для столбца `log_date`.
